home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / YICN23.ZIP / SOURCE / MAPEDIT.CPP < prev    next >
C/C++ Source or Header  |  1992-11-22  |  5KB  |  114 lines

  1. #include "animap.h"
  2. #include "actor.h"
  3. #include "xlib.h"
  4. #include "xtext.h"
  5. #include "xrect.h"
  6. #include "yakpal.h"
  7. #include <conio.h>
  8. #include <iostream.h>
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11.  
  12. void main(int argcount, char ** argvector)
  13. {
  14.   x_set_mode(2, 380);
  15.   x_set_doublebuffer(260);
  16.   x_text_init();
  17.   yakLib myYakLib("draw");
  18.   yakPalette myYakPalette("standard.ypl", &myYakLib);
  19.   myYakPalette.put();
  20.   char filename[20];
  21.   word thismap_numIcons, thismap_squareWidth, thismap_width, thismap_height;
  22.   animap * mymap;
  23.   if (argcount == 2)
  24.   {
  25.     mymap = new animap(argvector[1], &myYakLib);
  26.   }
  27.   else if (argcount == 6)
  28.   {
  29.     thismap_numIcons = atoi(argvector[1]);
  30.     thismap_squareWidth = atoi(argvector[2]);
  31.     thismap_width = atoi(argvector[3]);
  32.     thismap_height = atoi(argvector[4]);
  33.     mymap = new animap(thismap_numIcons, thismap_squareWidth, thismap_width,
  34.          thismap_height);
  35.     mymap->loadIcon(0, argvector[5]);
  36.     for (int counter = 1; counter < thismap_numIcons; ++counter)
  37.       mymap->loadIcon(counter, "grid24");
  38.     for (int width_counter = 0; width_counter < thismap_width; ++width_counter)
  39.       for (int height_counter = 0; height_counter < thismap_height; ++height_counter)
  40.     mymap->setSquare(width_counter, height_counter, 0);
  41.   }
  42.   else
  43.   {
  44.     x_text_mode();
  45.     cout << "\n\nMAPEDIT v1.0 21 oct 1992  by  Victor B. Putz\n\nUsage: \n";
  46.     cout << "mapedit filename\n   -- edit map file [filename]\n";
  47.     cout << "mapedit n1 n2 n3 n4 filename\n   -- start a new map with n1 max icons, n2 square width,\n";
  48.     cout << "      n3 width, n4 height, with background icon filename (omit .drw).\n\n";
  49.     exit(EXIT_FAILURE);
  50.   }
  51.   int terrain_number = 0;
  52.   animactor myactor;
  53.   myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
  54.   myactor.squareX = mymap->squareWidth-1;
  55.   myactor.squareY = mymap->squareWidth-1;
  56.   myactor.mymap = mymap;
  57.   myactor.put(0,0);
  58.   char exitchar = 'd';
  59.   while (exitchar != 'X')
  60.   {
  61.     mymap->show(myactor.mapX,myactor.mapY, 220 - myactor.squareX,150 - myactor.squareY, 6,4, HiddenPageOffs);
  62.     x_rect_fill(20,20,30,220,HiddenPageOffs,0);     //left
  63.     x_rect_fill(330,20,380,220,HiddenPageOffs,0);  //right
  64.     x_rect_fill(20,20,60,60, HiddenPageOffs,0);     //coords box
  65. //    x_rect_fill(20,215,380,220,HiddenPageOffs,0);  //bottom
  66. //    x_rect_fill(20,20,380,220, HiddenPageOffs, 0);   //top
  67.     x_printf(20,20,HiddenPageOffs, 10, "X: %d", myactor.mapX);
  68.     x_printf(20,30,HiddenPageOffs, 10, "Y: %d", myactor.mapY);
  69.     x_printf(20,40,HiddenPageOffs, 10, "IC:%d", terrain_number);
  70.     x_page_flip(20,20);
  71.     if (kbhit())
  72.     {
  73.       exitchar = getch();
  74.       if (exitchar == 0)
  75.     exitchar = getch();
  76.       switch(exitchar)
  77.       {
  78.     case 72 : myactor.addCommand(scriptNode::fineSlide, 1, 0,0, -mymap->squareWidth); break;
  79.     case 80 : myactor.addCommand(scriptNode::fineSlide, 1, 0,0, mymap->squareWidth); break;
  80.     case 75 : myactor.addCommand(scriptNode::fineSlide, 1, 0, -mymap->squareWidth, 0); break;
  81.     case 77 : myactor.addCommand(scriptNode::fineSlide, 1, 0, mymap->squareWidth,0); break;
  82.     case 71 : myactor.addCommand(scriptNode::fineSlide, 1, 0,-mymap->squareWidth, -mymap->squareWidth); break;
  83.     case 73 : myactor.addCommand(scriptNode::fineSlide, 1, 0,mymap->squareWidth, -mymap->squareWidth); break;
  84.     case 79 : myactor.addCommand(scriptNode::fineSlide, 1, 0,-mymap->squareWidth, mymap->squareWidth); break;
  85.     case 81 : myactor.addCommand(scriptNode::fineSlide, 1, 0,mymap->squareWidth, mymap->squareWidth); break;
  86.     case '>' : ++terrain_number;
  87.            if (terrain_number == mymap->numIcons)
  88.              terrain_number = 0;
  89.              myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
  90.            break;
  91.     case '<' : --terrain_number;
  92.            if (terrain_number < 0)
  93.              terrain_number = (mymap->numIcons - 1);
  94.              myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
  95.            break;
  96.     case ' ' : mymap->setSquare(myactor.mapX, myactor.mapY, terrain_number); break;
  97.     case 'L' : gets(filename);
  98.            mymap->iconTable[terrain_number].firstFrame = NULL;
  99.            mymap->loadIcon(terrain_number, filename);
  100.            if (mymap->iconTable[terrain_number].firstFrame == NULL)
  101.              mymap->loadIcon(terrain_number, "grid24");
  102.            mymap->reset();
  103.            myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
  104.            break;
  105.     case 'S' : gets(filename);
  106.            mymap->save(filename);
  107.            break;
  108.       } //switch
  109.  
  110.     }
  111.   }
  112.   x_text_mode();
  113. }
  114.